<!DOCTYPE html>
<html lang="en-us" dir="ltr">
    <head><meta charset='utf-8'>
<meta name='viewport' content='width=device-width, initial-scale=1'><meta name='description' content='docker新建centos7环境 docker run &amp;ndash;name centos7 -it -p 8000:80 -p 5000:5000 -v /Users/zhangfangwei/projects:/projects centos:7 /bin/bash docker run &amp;ndash;name centos7 -it -p 8000:80 -p 5000:5000 -v /Users/zhangfangwei/projects:/projects eeb6ee3f44bd /bin/bash yum update wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm yum install ./google-chrome-stable_current_x86_64.rpm 3. 安装chromedriver（千万与chrome-browser版本对应） 在 http://chromedriver.storage.googleapis.com/这个页面找对应版本的下载地址 wget http://chromedriver.storage.googleapis.com/99.0.4844.51/chromedriver_linux64.zip 解压unzip chromedriver_linux64.zip mv chromedriver /usr/bin即可
centos安装python3 yum -y install gcc* automake autoconf libtool make openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel mysql-devel gcc gcc-devel python-devel 3.7版本需要一个新包 yum install libffi-devel -y
查看容器虚拟ip 单个容器 docker inspect -f &amp;lsquo;{{.'><title>docker笔记</title>

<link rel='canonical' href='http://meruro.cn/p/docker%E7%AC%94%E8%AE%B0/'>

<link rel="stylesheet" href="/scss/style.min.5a8e892f6fa14515e9065eee1f5d2e05302606ec7f11750b2fb95198f9cdcbfd.css"><meta property='og:title' content='docker笔记'>
<meta property='og:description' content='docker新建centos7环境 docker run &amp;ndash;name centos7 -it -p 8000:80 -p 5000:5000 -v /Users/zhangfangwei/projects:/projects centos:7 /bin/bash docker run &amp;ndash;name centos7 -it -p 8000:80 -p 5000:5000 -v /Users/zhangfangwei/projects:/projects eeb6ee3f44bd /bin/bash yum update wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm yum install ./google-chrome-stable_current_x86_64.rpm 3. 安装chromedriver（千万与chrome-browser版本对应） 在 http://chromedriver.storage.googleapis.com/这个页面找对应版本的下载地址 wget http://chromedriver.storage.googleapis.com/99.0.4844.51/chromedriver_linux64.zip 解压unzip chromedriver_linux64.zip mv chromedriver /usr/bin即可
centos安装python3 yum -y install gcc* automake autoconf libtool make openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel mysql-devel gcc gcc-devel python-devel 3.7版本需要一个新包 yum install libffi-devel -y
查看容器虚拟ip 单个容器 docker inspect -f &amp;lsquo;{{.'>
<meta property='og:url' content='http://meruro.cn/p/docker%E7%AC%94%E8%AE%B0/'>
<meta property='og:site_name' content='梅鲁梅鲁梅鲁梅~'>
<meta property='og:type' content='article'><meta property='article:section' content='Post' /><meta property='article:tag' content='笔记' /><meta property='article:published_time' content='2019-04-18T22:00:07&#43;00:00'/><meta property='article:modified_time' content='2019-04-18T22:00:07&#43;00:00'/>
<meta name="twitter:title" content="docker笔记">
<meta name="twitter:description" content="docker新建centos7环境 docker run &amp;ndash;name centos7 -it -p 8000:80 -p 5000:5000 -v /Users/zhangfangwei/projects:/projects centos:7 /bin/bash docker run &amp;ndash;name centos7 -it -p 8000:80 -p 5000:5000 -v /Users/zhangfangwei/projects:/projects eeb6ee3f44bd /bin/bash yum update wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm yum install ./google-chrome-stable_current_x86_64.rpm 3. 安装chromedriver（千万与chrome-browser版本对应） 在 http://chromedriver.storage.googleapis.com/这个页面找对应版本的下载地址 wget http://chromedriver.storage.googleapis.com/99.0.4844.51/chromedriver_linux64.zip 解压unzip chromedriver_linux64.zip mv chromedriver /usr/bin即可
centos安装python3 yum -y install gcc* automake autoconf libtool make openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel mysql-devel gcc gcc-devel python-devel 3.7版本需要一个新包 yum install libffi-devel -y
查看容器虚拟ip 单个容器 docker inspect -f &amp;lsquo;{{.">
    </head>
    <body class="
    article-page
    ">
    <script>
        (function() {
            const colorSchemeKey = 'StackColorScheme';
            if(!localStorage.getItem(colorSchemeKey)){
                localStorage.setItem(colorSchemeKey, "auto");
            }
        })();
    </script><script>
    (function() {
        const colorSchemeKey = 'StackColorScheme';
        const colorSchemeItem = localStorage.getItem(colorSchemeKey);
        const supportDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches === true;

        if (colorSchemeItem == 'dark' || colorSchemeItem === 'auto' && supportDarkMode) {
            

            document.documentElement.dataset.scheme = 'dark';
        } else {
            document.documentElement.dataset.scheme = 'light';
        }
    })();
</script>
<div class="container main-container flex on-phone--column extended"><aside class="sidebar left-sidebar sticky ">
    <button class="hamburger hamburger--spin" type="button" id="toggle-menu" aria-label="Toggle Menu">
        <span class="hamburger-box">
            <span class="hamburger-inner"></span>
        </span>
    </button>

    <header>
        
            
            <figure class="site-avatar">
                <a href="/">
                
                    
                    
                    
                        
                        <img src="/img/ava_hu31add2dceb44736f969f74989490346b_19511_300x0_resize_q75_box.jpg" width="300"
                            height="300" class="site-logo" loading="lazy" alt="Avatar">
                    
                
                </a>
                
                    <span class="emoji">🍥</span>
                
            </figure>
            
        
        
        <div class="site-meta">
            <h1 class="site-name"><a href="/">梅鲁梅鲁梅鲁梅~</a></h1>
            <h2 class="site-description">朝闻道,夕死可矣.</h2>
        </div>
    </header><ol class="social-menu">
            
                <li>
                    <a 
                        href='https://github.com/CaiJimmy/hugo-theme-stack'
                        target="_blank"
                        title="GitHub"
                    >
                        
                        
                            <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-github" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
  <path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5" />
</svg>



                        
                    </a>
                </li>
            
                <li>
                    <a 
                        href='https://twitter.com'
                        target="_blank"
                        title="Twitter"
                    >
                        
                        
                            <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-twitter" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
  <path d="M22 4.01c-1 .49 -1.98 .689 -3 .99c-1.121 -1.265 -2.783 -1.335 -4.38 -.737s-2.643 2.06 -2.62 3.737v1c-3.245 .083 -6.135 -1.395 -8 -4c0 0 -4.182 7.433 4 11c-1.872 1.247 -3.739 2.088 -6 2c3.308 1.803 6.913 2.423 10.034 1.517c3.58 -1.04 6.522 -3.723 7.651 -7.742a13.84 13.84 0 0 0 .497 -3.753c-.002 -.249 1.51 -2.772 1.818 -4.013z" />
</svg>



                        
                    </a>
                </li>
            
        </ol><ol class="menu" id="main-menu">
        
        
        

        <li >
            <a href='/' >
                
                
                
                    <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-home" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z"/>
  <polyline points="5 12 3 12 12 3 21 12 19 12" />
  <path d="M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7" />
  <path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6" />
</svg>



                
                <span>Home</span>
            </a>
        </li>
        
        

        <li >
            <a href='/about/' >
                
                
                
                    <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-user" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z"/>
  <circle cx="12" cy="7" r="4" />
  <path d="M6 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2" />
</svg>



                
                <span>About</span>
            </a>
        </li>
        
        

        <li >
            <a href='/archives/' >
                
                
                
                    <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-archive" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z"/>
  <rect x="3" y="4" width="18" height="4" rx="2" />
  <path d="M5 8v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-10" />
  <line x1="10" y1="12" x2="14" y2="12" />
</svg>



                
                <span>Archives</span>
            </a>
        </li>
        
        

        <li >
            <a href='/search/' >
                
                
                
                    <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-search" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z"/>
  <circle cx="10" cy="10" r="7" />
  <line x1="21" y1="21" x2="15" y2="15" />
</svg>



                
                <span>Search</span>
            </a>
        </li>
        
        

        <li >
            <a href='/links/' >
                
                
                
                    <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z"/>
  <path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5" />
  <path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5" />
</svg>



                
                <span>Links</span>
            </a>
        </li>
        

        <div class="menu-bottom-section">
                <li id="i18n-switch">  
                    <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-language" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
  <path d="M4 5h7" />
  <path d="M9 3v2c0 4.418 -2.239 8 -5 8" />
  <path d="M5 9c-.003 2.144 2.952 3.908 6.7 4" />
  <path d="M12 20l4 -9l4 9" />
  <path d="M19.1 18h-6.2" />
</svg>



                    <select name="language" onchange="window.location.href = this.selectedOptions[0].value">
                        
                            <option value="http://meruro.cn/" selected>English</option>
                        
                            <option value="http://meruro.cn/zh-cn/" >中文</option>
                        
                            <option value="http://meruro.cn/ar/" >عربي</option>
                        
                    </select>
                </li>
            
            
            
                <li id="dark-mode-toggle">
                    <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-toggle-left" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z"/>
  <circle cx="8" cy="12" r="2" />
  <rect x="2" y="6" width="20" height="12" rx="6" />
</svg>



                    <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-toggle-right" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z"/>
  <circle cx="16" cy="12" r="2" />
  <rect x="2" y="6" width="20" height="12" rx="6" />
</svg>



                    <span>Dark Mode</span>
                </li>
            
        </div>
    </ol>
</aside>
<main class="main full-width">
    <article class="main-article">
    <header class="article-header">

    <div class="article-details">
    

    <div class="article-title-wrapper">
        <h2 class="article-title">
            <a href="/p/docker%E7%AC%94%E8%AE%B0/">docker笔记</a>
        </h2>
    
        
    </div>

    
    <footer class="article-time">
        
            <div>
                <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z"/>
  <path d="M11.795 21h-6.795a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v4" />
  <circle cx="18" cy="18" r="4" />
  <path d="M15 3v4" />
  <path d="M7 3v4" />
  <path d="M3 11h16" />
  <path d="M18 16.496v1.504l1 1" />
</svg>
                <time class="article-time--published">Apr 18, 2019</time>
            </div>
        

        
            <div>
                <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z"/>
  <circle cx="12" cy="12" r="9" />
  <polyline points="12 7 12 12 15 15" />
</svg>



                <time class="article-time--reading">
                    6 minute read
                </time>
            </div>
        
    </footer>
    

    
</div>
</header>

    <section class="article-content">
    
    
    <h2 id="docker新建centos7环境">docker新建centos7环境</h2>
<p>docker run &ndash;name centos7 -it -p 8000:80 -p 5000:5000 -v /Users/zhangfangwei/projects:/projects centos:7 /bin/bash
docker run &ndash;name centos7 -it -p 8000:80 -p 5000:5000 -v /Users/zhangfangwei/projects:/projects eeb6ee3f44bd /bin/bash
yum update
wget <a class="link" href="https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm"  target="_blank" rel="noopener"
    >https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm</a>
yum install ./google-chrome-stable_current_x86_64.rpm
3. 安装chromedriver（千万与chrome-browser版本对应）
在 <a class="link" href="http://chromedriver.storage.googleapis.com/"  target="_blank" rel="noopener"
    >http://chromedriver.storage.googleapis.com/</a>这个页面找对应版本的下载地址
wget <a class="link" href="http://chromedriver.storage.googleapis.com/99.0.4844.51/chromedriver_linux64.zip"  target="_blank" rel="noopener"
    >http://chromedriver.storage.googleapis.com/99.0.4844.51/chromedriver_linux64.zip</a>
解压unzip chromedriver_linux64.zip
mv chromedriver /usr/bin即可</p>
<h2 id="centos安装python3">centos安装python3</h2>
<p>yum -y install gcc* automake autoconf libtool make openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel mysql-devel gcc gcc-devel python-devel
3.7版本需要一个新包
yum install libffi-devel -y</p>
<h2 id="查看容器虚拟ip">查看容器虚拟ip</h2>
<p>单个容器 docker inspect -f &lsquo;{{.Name}} - {{.NetworkSettings.IPAddress }}&rsquo; $(docker ps -aq)
所有容器 docker inspect -f &lsquo;{{.Name}} - {{.NetworkSettings.IPAddress }}&rsquo; $(docker ps -aq)</p>
<h2 id="基本命令">基本命令</h2>
<pre><code>正规系统使用sudo systemctl start docker
wsl使用 sudo service docker start

镜像下载docker pull ubuntu:13.10
启动容器```docker run -it ubuntu /bin/bash``` /bin/bash代表shell  -i: 交互式操作。-t: 终端。 退出exit
查看容器:```docker ps -a```
查看镜像:```docker images```
镜像删除docker rmi ubuntu:18.04
镜像重命名sudo docker tag ce4445ead350 nginx_vue
容器删除docker rm -f 1e560fca3906

-w 指定docker的工作目录
拷贝本地文件到容器
docker cp 本地路径 容器长ID:容器路径
挂载本地目录
docker run -it -v /localpath:/images/path images /bin/bash
</code></pre>
<h2 id="docker安装">docker安装</h2>
<pre><code># 以Ubuntu为例
# Step 1: 移除之前docker版本并更新更新 apt 包索引
sudo apt-get remove docker docker-engine docker.io
sudo apt-get update

# Step 2: 安装 apt 依赖包，用于通过HTTPS来获取仓库
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

# Step 3: 添加 Docker 的官方 GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# Step 4: 设置docker稳定版仓库，这里使用了阿里云仓库
sudo add-apt-repository &quot;deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable&quot;
sudo apt-get update

# Step 5: 安装免费的docker Community版本docker-ce
sudo apt-get -y install docker-ce
# sudo apt-get install -y docker-ce=&lt;VERSION&gt; #该命令可以选择docker-ce版本

# Step 6: 查看docker版本及运行状态
sudo docker -v
sudo systemctl status docker

# Step 7：本步非必需。使用阿里云设置Docker镜像加速，注意下面链接请使用阿里云给自己的URL
sudo mkdir -p /etc/docker 
sudo tee /etc/docker/daemon.json &lt;&lt;-'EOF' 
{  &quot;registry-mirrors&quot;: [&quot;https://ua3456xxx.mirror.aliyuncs.com&quot;] } 
EOF 
sudo systemctl daemon-reload 
sudo systemctl restart docker
</code></pre>
<h2 id="docker镜像操作">docker镜像操作</h2>
<pre><code># 搜索镜像：docker search + 镜像名字
$ docker search nginx

# 从registry拉取镜像：docker pull + 镜像名字:版本号
$ docker pull nginx:latest

# 从registry仓库提交镜像：docker push + 仓库名:标签
$ docker push repro1:v1.0

# 查看本地镜像: docker images
$ docker images

# 使用Dockerfile创建镜像: docker build + 目录，.代表当前目录，-t表示加标签
$ docker build -t mynginx:1.0 .

# 删除一个或多个镜像: docker rmi + 镜像1 + 镜像2
$ docker rmi mynginx:1.0 mynginx:2.0

# 删除未标记或未用过的镜像
$ docker image prune 镜像名
# 删除使用过的镜像
$ docker image rm 镜像名

# 删除未使用过的镜像
$ docker image prune -a

# 给镜像加标记： docker tag 镜像标签 新镜像标签名
$ docker tag mynginx:1.0 nginx1

# 把镜像保存为.tar文件: docker save 镜像 &gt; 文件
正确方式docker save nginx_vue -o mynginx_vue1.tar


# 从.tar文件载入镜像: docker load -i .tar文件
$ docker load -i mynginx_v1.tar

# 根据容器创建镜像：docker commit 容器名 镜像名
$ docker commit 
</code></pre>
<h2 id="docker容器操作">docker容器操作</h2>
<pre><code># 创建容器: docker create + 选项(-i, -t, -d, -p, -v, -e) + 镜像
$ docker create --name imagesname -it -p 8080:8080 mynginx:1.0

# 各选项含义
# -i:以交互模式运行容器，通常与-t 同时使用；
# -d:后台运行容器，并返回容器ID；
# -p:端口隐射, 宿主机在前，容器在后
# -P:随机映射宿主机端口
# -t:为容器重新分配一个伪输入终端，通常与-i 同时使用；
# -v:目录挂载
# --entrypoint: 指定进入点
# --restart=always: 服务重启

# 启动容器：docker start + 容器名
$ docker start mynginx_1

# 创建 + 运行容器: docker run + 选项 + 镜像 + 命令
$ docker run --name mynginx_1 -it -p 8080:80 mynginx:1.0
$ docker run -it ubuntu /bin/bash

# 查看正在运行中的容器：docker ps
$ docker ps

如果已经启动的项目，则使用update更新：
docker update --restart=always isaler_v0.0.11

# 查看所有容器，包括停止运行的容器: docker ps -a
$ docker ps -a

# 停止一个正在运行的容器: docker stop 容器
$ docker stop mynginx_1

# 重启容器：docker restart + 容器名
$ docker restart mynginx_1

# 容器重命名：docker rename 老名字 新名字
$ docker rename mynginx_1 mynginx_2

# 删除一个容器：docker rm 容器名
$ docker rm mynginx_1

# 强制删除一个正在运行的容器：docker rm -f 容器名
$ docker rm -f mynginx_1

# 删除已停止运行的所有容器: docker container prune
$ docker container prune

# 拷贝文件，从容器到宿主机：docker cp 容器名:容器内路径 宿主机文件路径
$ docker cp myweb_1:/index.html index.html

# 拷贝文件，从宿主机到容器：docker cp 宿主机文件路径 容器名:容器内路径
$ docker cp index.html myweb_1:/index.html

# 进入运行的容器，执行命令: docker exec + 选项 + 容器名 + 命令 + 参数
# 推荐大家使用 docker exec命令，使用此命令即使exit容器终端，也不会导致容器的停止
$ docker exec -it mynginx_1 /bin/bash
$ docker exec -it mynginx_1 /bin/bash start.sh

# 查看容器端口映射：docker port 容器名
$ docker port mynginx_1

# 查看容器内已修改文件：docker diff 容器名
$ docker diff mynginx_1

# 查看容器日志：docker logs + 容器名
$ docker logs web

# 查看容器内运行进程：docker top + 容器名
$ docker top web

# 查看容器的底层信息：docker inspect + 容器名
$ docker inspect web

# 利用inspect命令查看容器的IP地址
$ docker inspect web | grep &quot;IPAddress&quot;

# 查看运行容器的统计数据：docker stats
$ docker stats
</code></pre>
<p>你好，这是 Bing。我可以帮你了解如何清理 Docker 占用的磁盘空间。根据 web search results，有以下几种常用的方法：</p>
<ul>
<li>使用 docker system prune 命令来一键清理所有未使用的容器、镜像、数据卷和网络²⁴⁵⁶。</li>
<li>使用 docker container prune 命令来删除所有已停止的容器²。</li>
<li>使用 docker image prune 命令来删除所有悬挂状态的镜像²。</li>
<li>使用 docker volume prune 命令来删除所有未被使用的数据卷²。</li>
<li>使用 docker builder prune 命令来删除镜像构建过程中产生的缓存空间²。</li>
<li>使用 docker-compose down 命令来清理与特定 compose 文件关联的资源³。</li>
</ul>
<h2 id="docker-compose命令大全">Docker-compose命令大全</h2>
<pre><code># 默认使用docker-compose.yml构建镜像
$ docker-compose build
$ docker-compose build --no-cache # 不带缓存的构建

# 指定不同yml文件模板用于构建镜像
$ docker-compose build -f docker-compose1.yml

# 列出Compose文件构建的镜像
$ docker-compose images                          

# 启动所有编排容器服务
$ docker-compose up -d

# 查看正在运行中的容器
$ docker-compose ps 

# 查看所有编排容器，包括已停止的容器
$ docker-compose ps -a

# 进入指定容器执行命令
$ docker-compose exec nginx bash 
$ docker-compose exec web python manage.py migrate --noinput

# 查看web容器的实时日志
$ docker-compose logs -f web

# 停止所有up命令启动的容器
$ docker-compose down 

# 停止所有up命令启动的容器,并移除数据卷
$ docker-compose down -v

# 重新启动停止服务的容器
$ docker-compose restart web

# 暂停web容器
$ docker-compose pause web

# 恢复web容器
$ docker-compose unpause web

# 删除web容器，删除前必需停止stop web容器服务	
$ docker-compose rm web  

# 查看各个服务容器内运行的进程 
$ docker-compose top
</code></pre>
<h2 id="实例">实例</h2>
<pre><code>拉取nginx容器 
运行nginx: ```docker run --name nginx-test -p 8080:80 -d nginx```
--name nginx-test：容器名称。-p 8080:80：端口映射,将本地 8080 端口映射到容器内部的 80 端口 -d nginx：设置镜像nginx的容器在后台一直运行。
停止:docker stop &lt;容器 ID&gt;
重启:docker restart &lt;容器 ID&gt;
进入:docker exec -it 243c32535da7 /bin/bash 使用exit推出容器时,容器继续在后台运行
导出容器docker export 1e560fca3906 &gt; ubuntu.tar
导入容器快照cat docker/ubuntu.tar | docker import - test/ubuntu:v1
运行应用
```
	runoob@runoob:~# docker pull training/webapp  # 载入镜像
	runoob@runoob:~# docker run -d -P training/webapp python app.py
```
-P:将容器内部使用的网络端口随机映射到我们使用的主机上。
可以通过 -p 参数来设置不一样的端口：```-p 5000:5000 ```
docker logs [ID或者名字] 可以查看容器内部的标准输出。
-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。
我们还可以使用 docker top 来查看容器内部运行的进程
使用--name runoob给容器命名runoob
docker配置/etc/docker/daemon.json
配置dns ```{&quot;dns&quot; : [&quot;114.114.114.114&quot;,&quot;8.8.8.8&quot;]}```
</code></pre>
<h2 id="制作镜像">制作镜像</h2>
<pre><code>使用 Dockerfile 文件制作
FROM nginx //基于nginx制作此镜像
RUN echo '这是一个本地构建的nginx镜像' &gt; /usr/share/nginx/html/index.html   //RUN用于执行后面跟着的命令行命令
构建 $ docker build -t nginx:v3 . （镜像名称:镜像标签 上下文路径）
</code></pre>
<h2 id="运行多容器-docker-应用程序">运行多容器 Docker 应用程序</h2>
<pre><code>使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务，这样它们可以在隔离环境中一起运行。
最后，执行 docker-compose up 命令来启动并运行整个应用程序。
compose安装
	sudo curl -L &quot;https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose
	$ sudo chmod +x /usr/local/bin/docker-compose
	$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
	$ docker-compose --version
创建python的 Dockerfile 文件

	```
	FROM ubuntu:18.04
	WORKDIR /code
	# ENV FLASK_APP app.py
	# ENV FLASK_RUN_HOST 0.0.0.0
	# RUN apk add --no-cache gcc musl-dev linux-headers
	COPY requirements.txt requirements.txt
	
	RUN apt update &amp;&amp; /
		apt-get install -y --no-install-recommends python3-pip gcc openssh-server &amp;&amp; /
		apt-get install libmysqlclient-dev &amp;&amp; /
		pip install -r requirements.txt
		
	COPY . .
	# CMD [&quot;flask&quot;, &quot;run&quot;]
	```
	FROM python:3.7-alpine: 从 Python 3.7 映像开始构建镜像。
	WORKDIR /code: 将工作目录设置为 /code。
	ENV FLASK_APP app.py
	ENV FLASK_RUN_HOST 0.0.0.0 //设置 flask 命令使用的环境变量。
	RUN apk add --no-cache gcc musl-dev linux-headers: 安装 gcc，以便诸如 MarkupSafe 和 SQLAlchemy 之类的 Python 包可以编译加速。
	COPY . .: 将 . 项目中的当前目录复制到 . 镜像中的工作目录。
	CMD [&quot;flask&quot;, &quot;run&quot;]: 容器提供默认的执行命令为：flask run。
创建mysql的 Dockerfile文件

```
FROM mysql:5.7
RUN mkdir -p /usr/data/mysql/logs /usr/data/mysql/data /usr/data/mysql/conf &amp;&amp; /
COPY my.cnf /data/mysql

```
运行容器 docker run --restart=always -p 3306:3306 --name mysql -v d:\mysql\conf:/etc/mysql  -v d:\mysql\log:/var/log/mysql -v d:\mysql\data:/var/lib/mysql -v d:\mysql\conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=zzzz -d mysql:5.7
my.cnf文件

```
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
 
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
```
创建docker-compose.yml文件

	```
	# yaml 配置
	version: '3'
	services:
	  web:
		build: .
		ports:
		 - &quot;5000:5000&quot;
	  redis:
		image: &quot;redis:alpine&quot;
	```
	该 Compose 文件定义了两个服务：web 和 redis。
	web：该 web 服务使用从 Dockerfile 当前目录中构建的镜像。然后，它将容器和主机绑定到暴露的端口 5000。此示例服务使用 Flask Web 服务器的默认端口 5000 。
	redis：该 redis 服务使用 Docker Hub 的公共 Redis 映像。
	其他参数[](https://www.runoob.com/docker/docker-compose.html)
	启动应用```docker-compose up```
</code></pre>
<h2 id="vue项目的docker示例">vue项目的docker示例</h2>
<pre><code>```dockerfile文件
# 设置基础镜像
FROM nginx
# 定义作者
MAINTAINER meruro
# 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面
COPY dist/  /usr/share/nginx/html/
```
构建镜像:```docker build -t gentle-vue . ```
# -t 是给镜像取名。
# 最后有一个点 “.”，表示使用当前路径下的 dockerfile 文件，也可以指定使用其它路径的。
</code></pre>
<h2 id="docker运程服务和ssh远程服务">docker运程服务和ssh远程服务</h2>
<pre><code>1、编辑docker文件：/usr/lib/systemd/system/docker.service
[root@localhost ~]# vim /usr/lib/systemd/system/docker.service
# 修改ExecStart行为下面内容
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375
或者
[root@localhost ~]# sed -i 's#/usr/bin/dockerd#&amp; -H tcp://0.0.0.0:2375#' /usr/lib/systemd/system/docker.service
2、重新加载docker配置
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
apt-get install openssh-server
vim /etc/ssh/sshd_config
找到PermitRootLogin prohibit-password这一行，修改为PermitRootLogin yes，允许通过ssh远程访问docker。
</code></pre>
<h2 id="docker使用mysql实例">docker使用mysql实例</h2>
<pre><code>docker run -p 3306:3306 --name mysql1 -v d:\mysql\log:/var/log/mysql -v d:\mysql\data:/var/lib/mysql -v d:\mysql\conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
配置mysql

vi d/mysql/conf/my.cnf
[client]
default-character-set=utf8
​
[mysql]
default-character-set=utf8
​
[mysqld]
init_connect='SET conllation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
</code></pre>
<h2 id="docker使用redis">docker使用redis</h2>
<pre><code>$ docker run -d redis:3.2
$ docker run -d --name redisC -p 6379:6379 -v E:\data\redis:/data redis
</code></pre>
<h2 id="创建python镜像">创建python镜像</h2>
<pre><code>docker pull library/debian:latest
</code></pre>

</section>


    <footer class="article-footer">
    
    <section class="article-tags">
        
            <a href="/tags/%E7%AC%94%E8%AE%B0/">笔记</a>
        
    </section>


    
    <section class="article-copyright">
        <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-copyright" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z"/>
  <circle cx="12" cy="12" r="9" />
  <path d="M14.5 9a3.5 4 0 1 0 0 6" />
</svg>



        <span>Licensed under CC BY-NC-SA 4.0</span>
    </section>
    </footer>


    
</article>

    

    

     
    
        
    

    <footer class="site-footer">
    <section class="copyright">
        &copy; 
        
            2020 - 
        
        2023 梅鲁梅鲁梅鲁梅~
    </section>
    
    <section class="powerby">
        Built with <a href="https://gohugo.io/" target="_blank" rel="noopener">Hugo</a> <br />
        Theme <b><a href="https://github.com/CaiJimmy/hugo-theme-stack" target="_blank" rel="noopener" data-version="3.13.0">Stack</a></b> designed by <a href="https://jimmycai.com" target="_blank" rel="noopener">Jimmy</a>
    </section>
</footer>


    
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

    
    <div class="pswp__bg"></div>

    
    <div class="pswp__scroll-wrap">

        
        <div class="pswp__container">
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
        </div>

        
        <div class="pswp__ui pswp__ui--hidden">

            <div class="pswp__top-bar">

                

                <div class="pswp__counter"></div>

                <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>

                <button class="pswp__button pswp__button--share" title="Share"></button>

                <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>

                <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>

                
                
                <div class="pswp__preloader">
                    <div class="pswp__preloader__icn">
                        <div class="pswp__preloader__cut">
                            <div class="pswp__preloader__donut"></div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
                <div class="pswp__share-tooltip"></div>
            </div>

            <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
            </button>

            <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
            </button>

            <div class="pswp__caption">
                <div class="pswp__caption__center"></div>
            </div>

        </div>

    </div>

</div><script 
                src="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.js"integrity="sha256-ePwmChbbvXbsO02lbM3HoHbSHTHFAeChekF1xKJdleo="crossorigin="anonymous"
                defer
                >
            </script><script 
                src="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe-ui-default.min.js"integrity="sha256-UKkzOn/w1mBxRmLLGrSeyB4e1xbrp4xylgAWb3M42pU="crossorigin="anonymous"
                defer
                >
            </script><link 
                rel="stylesheet" 
                href="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/default-skin/default-skin.min.css"crossorigin="anonymous"
            ><link 
                rel="stylesheet" 
                href="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.css"crossorigin="anonymous"
            >

            </main>
    <aside class="sidebar right-sidebar sticky">
        
            
                
    <section class="widget archives">
        <div class="widget-icon">
            <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-hash" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  <path stroke="none" d="M0 0h24v24H0z"/>
  <line x1="5" y1="9" x2="19" y2="9" />
  <line x1="5" y1="15" x2="19" y2="15" />
  <line x1="11" y1="4" x2="7" y2="20" />
  <line x1="17" y1="4" x2="13" y2="20" />
</svg>



        </div>
        <h2 class="widget-title section-title">Table of contents</h2>
        
        <div class="widget--toc">
            <nav id="TableOfContents">
  <ol>
    <li><a href="#docker新建centos7环境">docker新建centos7环境</a></li>
    <li><a href="#centos安装python3">centos安装python3</a></li>
    <li><a href="#查看容器虚拟ip">查看容器虚拟ip</a></li>
    <li><a href="#基本命令">基本命令</a></li>
    <li><a href="#docker安装">docker安装</a></li>
    <li><a href="#docker镜像操作">docker镜像操作</a></li>
    <li><a href="#docker容器操作">docker容器操作</a></li>
    <li><a href="#docker-compose命令大全">Docker-compose命令大全</a></li>
    <li><a href="#实例">实例</a></li>
    <li><a href="#制作镜像">制作镜像</a></li>
    <li><a href="#运行多容器-docker-应用程序">运行多容器 Docker 应用程序</a></li>
    <li><a href="#vue项目的docker示例">vue项目的docker示例</a></li>
    <li><a href="#docker运程服务和ssh远程服务">docker运程服务和ssh远程服务</a></li>
    <li><a href="#docker使用mysql实例">docker使用mysql实例</a></li>
    <li><a href="#docker使用redis">docker使用redis</a></li>
    <li><a href="#创建python镜像">创建python镜像</a></li>
  </ol>
</nav>
        </div>
    </section>

            
        
    </aside>


        </div>
        <script 
                src="https://cdn.jsdelivr.net/npm/node-vibrant@3.1.6/dist/vibrant.min.js"integrity="sha256-awcR2jno4kI5X0zL8ex0vi2z&#43;KMkF24hUW8WePSA9HM="crossorigin="anonymous"
                
                >
            </script><script type="text/javascript" src="/ts/main.js" defer></script>
<script>
    (function () {
        const customFont = document.createElement('link');
        customFont.href = "https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700&display=swap";

        customFont.type = "text/css";
        customFont.rel = "stylesheet";

        document.head.appendChild(customFont);
    }());
</script>

    </body>
</html>
